<template>
    <div class="app-container">
        <el-tabs tab-position="left" v-model="activeName">
            <el-tab-pane name="first" label="4G分值计算">
                <el-table :data="tableData" :span-method="spanMethod" border style="width: 100%">
                    <el-table-column label="条件" header-align="center">
                        <el-table-column prop="维度指标" label="维度指标" header-align="center" align="center" width="100" />
                        <el-table-column prop="维度分数" label="维度分数" header-align="center" align="center" width="80" />
                        <el-table-column prop="指标" label="指标" header-align="center" align="center" width="190" />
                        <el-table-column prop="指标扣分" label="维度扣分" header-align="center" align="center" width="80" />
                        <el-table-column prop="不达标条件" label="问题小区不达标条件" header-align="center" align="center"
                            width="800" />
                        <el-table-column prop="闭环标准" label="闭环标准" header-align="center" align="center" width="500" />
                        <el-table-column prop="是否有变动" label="是否有变动" header-align="center" align="center" width="100" />
                    </el-table-column>
                </el-table>
            </el-tab-pane>
            <el-tab-pane name="second" label="5G分值计算">
                <el-table :data="tableData1" :span-method="spanMethod1" border style="width: 100%">
                    <el-table-column label="条件" header-align="center">
                        <el-table-column prop="维度指标" label="维度指标" header-align="center" align="center" width="100" />
                        <el-table-column prop="维度分数" label="维度分数" header-align="center" align="center" width="80" />
                        <el-table-column prop="指标" label="指标" header-align="center" align="center" width="190" />
                        <el-table-column prop="指标扣分" label="维度扣分" header-align="center" align="center" width="80" />
                        <el-table-column prop="不达标条件" label="问题小区不达标条件" header-align="center" align="center"
                            width="800" />
                        <el-table-column prop="闭环标准" label="闭环标准" header-align="center" align="center" width="500" />
                        <el-table-column prop="是否有变动" label="是否有变动" header-align="center" align="center" width="100" />
                    </el-table-column>
                </el-table>
            </el-tab-pane>
        </el-tabs>
    </div>
</template>

<script setup>

import { ref } from "vue";

const activeName = ref("first");

const tableData = ref([
    {
        维度指标: '覆盖问题',
        维度分数: '10',
        指标: '弱覆盖',
        指标扣分: '10',
        不达标条件: 'RSRP覆盖率(≥-110dbm)＜90% & 参考信号接收功率 (RSRP)样本总数>3000',
        闭环标准: 'RSRP覆盖率(≥-110dbm)≥90%',
        是否有变动: '变动',
    },

    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '下行高干扰（优先）',
        指标扣分: '10',
        不达标条件: '重叠覆盖度＞5% & RSRP覆盖率(≥-110dbm)＞90% & CQI<7占比(%)＞20% & 参考信号接收功率 (RSRP)样本总数>3000',
        闭环标准: 'CQI<7占比(%)＜20% ',
        是否有变动: '变动',
    },

    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '重叠覆盖（其次）',
        指标扣分: '5',
        不达标条件: '重叠覆盖度＞10% & 参考信号接收功率 (RSRP)样本总数>3000',
        闭环标准: '重叠覆盖度＜10%',
        是否有变动: '变动',
    },

    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '过覆盖',
        指标扣分: '5',
        不达标条件: '同频最近距离＜网优有数TA*1.2',
        闭环标准: '同频最近距离＞网优有数TA',
        是否有变动: '变动',
    },

    {
        维度指标: '容量问题',
        维度分数: '10',
        指标: '高负荷',
        指标扣分: '10',
        不达标条件: 'MAX最大利用率＞50%（FDD1800&3DMIMO＞70%，其他频点＞50%）',
        闭环标准: 'MAX最大利用率＜50%（FDD1800&3DMIMO＜70%，其他频点＜50%）',
    },

    {
        维度指标: '业务问题',
        维度分数: '10',
        指标: '低流量',
        指标扣分: '10',
        不达标条件: '总流量(MB)(MB)＜500MB',
        闭环标准: '总流量(MB)(MB)＞500MB',
    },

    {
        维度指标: '干扰问题',
        维度分数: '10',
        指标: '上行干扰',
        指标扣分: '10',
        不达标条件: '小区RB上行平均干扰电平(dbm)＞-110',
        闭环标准: '小区RB上行平均干扰电平(dbm)＜-110',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '无线接通率',
        指标扣分: '5',
        不达标条件: '无线接通率<98%',
        闭环标准: '无线接通率≥98%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '无线接通率(QCI=1)',
        指标扣分: '5',
        不达标条件: '无线接通率(QCI=1)<98%',
        闭环标准: '无线接通率(QCI=1)≥98%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '无线掉线率',
        指标扣分: '5',
        不达标条件: '无线掉线率>2%',
        闭环标准: '无线掉线率≤2%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '切换成功率',
        指标扣分: '5',
        不达标条件: '切换成功率＜98%',
        闭环标准: '切换成功率≥98%',
    },

    {
        维度指标: '感知问题',
        维度分数: '5',
        指标: '速率码率比',
        指标扣分: '5',
        不达标条件: '速率码率比%＜6',
        闭环标准: '速率码率比%≥6',
    },

    {
        维度指标: '感知问题',
        维度分数: '5',
        指标: 'MOS值',
        指标扣分: '5',
        不达标条件: '上行MOS值V2ALL＜3 OR 下行MOS值V2ALL＜3',
        闭环标准: '上行MOS值V2ALL≥3 AND 下行MOS值V2ALL≥3',
    },

    {
        维度指标: '感知问题',
        维度分数: '5',
        指标: '上行用户平均速率(Mbps)',
        指标扣分: '5',
        不达标条件: '上行用户平均速率(Mbps)＜1  --暂定',
        闭环标准: '上行用户平均速率(Mbps)＞1  --暂定',
        是否有变动: '新增',
    },

    {
        维度指标: '感知问题',
        维度分数: '5',
        指标: '下行用户平均速率(Mbps)',
        指标扣分: '5',
        不达标条件: '下行用户平均速率(Mbps)＜3  --暂定',
        闭环标准: '下行用户平均速率(Mbps)＞3  --暂定',
        是否有变动: '新增',
    },])

const tableData1 = ref([
    {
        维度指标: '覆盖问题',
        维度分数: '10',
        指标: '弱覆盖',
        指标扣分: '10',
        不达标条件: 'RSRP覆盖率(≥-110dbm)＜90% & MRO样本总数＞3000',
        闭环标准: 'RSRP覆盖率(≥-110dbm)≥90%',
        是否有变动: '变动',
    },
    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '下行高干扰（优先）',
        指标扣分: '10',
        不达标条件: '重叠覆盖度＞10% & SINR信噪比(≥0db)＜90% & RRC连接最大数(个)＞20',
        闭环标准: '"下行SINR＜0db采样点占比"＜10 ',
        是否有变动: '变动',
    },

    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '重叠覆盖（其次）',
        指标扣分: '5',
        不达标条件: '重叠覆盖度＞20% & MRO样本总数＞3000',
        闭环标准: '重叠覆盖度≤10%',
        是否有变动: '变动',
    },

    {
        维度指标: '结构问题',
        维度分数: '20',
        指标: '过覆盖',
        指标扣分: '5',
        不达标条件: '同频最近距离＜网优有数TA*1.2',
        闭环标准: '同频最近距离＞网优有数TA',
        是否有变动: '变动',
    },

    {
        维度指标: '容量问题',
        维度分数: '10',
        指标: '高负荷',
        指标扣分: '10',
        不达标条件: 'MAX最大利用率＞50%（2.6G&4.9G＞60%，700M＞50%）',
        闭环标准: 'MAX最大利用率≤50%（2.6G&4.9G≤70%，FDD1800≤50%）',
    },

    {
        维度指标: '业务问题',
        维度分数: '10',
        指标: '低流量',
        指标扣分: '10',
        不达标条件: '总流量(MB)＜500MB',
        闭环标准: '总流量(MB)≥500MB',
    },

    {
        维度指标: '干扰问题',
        维度分数: '10',
        指标: '上行干扰',
        指标扣分: '10',
        不达标条件: '小区RB上行平均干扰电平(dbm)（2.6G4.9G＞-107dbm,700M＞-110dbm)',
        闭环标准: '小区RB上行平均干扰电平(dbm)≤-107',
        是否有变动: '变动',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '无线接通率',
        指标扣分: '5',
        不达标条件: '无线接通率<98%',
        闭环标准: '无线接通率≥98%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: 'VoNR接通成功率',
        指标扣分: '5',
        不达标条件: 'VoNR业务接通成功率(5QI1)(%)<98%',
        闭环标准: 'VoNR业务接通成功率(5QI1)(%)≥98%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '无线掉线率',
        指标扣分: '5',
        不达标条件: '无线掉线率>2%',
        闭环标准: '无线掉线率≤2%',
    },

    {
        维度指标: '性能问题',
        维度分数: '20',
        指标: '切换成功率',
        指标扣分: '5',
        不达标条件: '切换成功率＜98%',
        闭环标准: '切换成功率≥98%',
    },
    {
        维度指标: '感知问题',
        维度分数: '20',
        指标: '速率码率比',
        指标扣分: '5',
        不达标条件: '速率码率比%＜6',
        闭环标准: '速率码率比%≥6',
    },

    {
        维度指标: '感知问题',
        维度分数: '20',
        指标: 'MOS值',
        指标扣分: '5',
        不达标条件: '上行MOS值V2ALL＜3 OR 下行MOS值V2ALL＜3',
        闭环标准: '上行MOS值V2ALL≥3 AND 下行MOS值V2ALL≥3',
    },

    {

        维度指标: '感知问题',
        维度分数: '20',
        指标: '用户上行平均吞吐率(Mbps)(Mbps)',
        指标扣分: '5',
        不达标条件: '用户上行平均吞吐率(Mbps)(Mbps)＜3 --暂定',
        是否有变动: '新增',
    },

    {
        维度指标: '感知问题',
        维度分数: '20',
        指标: '用户下行平均吞吐率(Mbps)(Mbps)',
        指标扣分: '5',
        不达标条件: '用户下行平均吞吐率(Mbps)(Mbps)＜5 --暂定',
        是否有变动: '新增',
    }
])

const spanMethod = ({ row, column, rowIndex, columnIndex }) => {
    if (columnIndex === 0 || columnIndex === 1) {
        const currentDimension = row.维度指标;
        const previousDimension = rowIndex > 0 ? tableData.value[rowIndex - 1].维度指标 : null;
        const currentCategory = row.维度分数;
        const previousCategory = rowIndex > 0 ? tableData.value[rowIndex - 1].维度分数 : null;

        if (rowIndex > 0 && currentDimension === previousDimension && currentCategory === previousCategory) {
            return [0, 0]; // 当前单元格隐藏
        }

        const rowspan = tableData.value.slice(rowIndex).findIndex(item =>
            item.维度指标 !== currentDimension || item.维度分数 !== currentCategory);
        return [rowspan === -1 ? tableData.value.length - rowIndex : rowspan, 1];
    }

    // 对于其他列，默认返回不合并
    return [1, 1];
};

const spanMethod1 = ({ row, column, rowIndex, columnIndex }) => {
    if (columnIndex === 0 || columnIndex === 1) {
        const currentDimension = row.维度指标;
        const previousDimension = rowIndex > 0 ? tableData1.value[rowIndex - 1].维度指标 : null;
        const currentCategory = row.维度分数;
        const previousCategory = rowIndex > 0 ? tableData1.value[rowIndex - 1].维度分数 : null;

        if (rowIndex > 0 && currentDimension === previousDimension && currentCategory === previousCategory) {
            return [0, 0]; // 当前单元格隐藏
        }

        const rowspan = tableData1.value.slice(rowIndex).findIndex(item =>
            item.维度指标 !== currentDimension || item.维度分数 !== currentCategory);
        return [rowspan === -1 ? tableData1.value.length - rowIndex : rowspan, 1];
    }

    // 对于其他列，默认返回不合并
    return [1, 1];
};



</script>